﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using Entity;

namespace Data
{
    public class AimeData
    {

        /// <summary>
        /// Ajoute un "J'aime" sur un statut.
        /// </summary>
        /// <param name="idstatut">Le statut</param>
        /// <param name="idutilisateur">L'auteur du "J'aime"</param>
        public static void ajouterAime(int idstatut, int idutilisateur)
        {
            ModeleDataContext mdl = DataContext.Context;

            Aime aime = new Aime();
            aime.idstatut = idstatut;
            aime.idutilisateur = idutilisateur;

            mdl.Aime.InsertOnSubmit(aime);
            mdl.SubmitChanges();
        }

        /// <summary>
        /// Indique si l'utilisateur aime un statut donné.
        /// </summary>
        /// <param name="idstatut">Le statut</param>
        /// <param name="idutilisateur">L'utilisateur</param>
        /// <returns>True si l'utilisateur aime le statut, false sinon</returns>
        public static bool utilisateurAimeStatut(int idstatut, int idutilisateur)
        {
            ModeleDataContext mdl = DataContext.Context;

            var sql = from a in mdl.Aime
                      where
                            a.idstatut == idstatut
                            && a.idutilisateur == idutilisateur
                      select a;

            List<Aime> aimes = sql.ToList();

            if (aimes.Count > 0)
                return true;
            else
                return false;
        }


        /*
         * Non utilisé.
         * Laissé ici au cas où.
        /// <summary>
        /// Retourne le Aime de l'utilisateur sur un statut.
        /// </summary>
        /// <param name="idstatut">Le statut</param>
        /// <returns>Le Aime sur le statut ou null s'il n'y en a pas</returns>
        public static Aime getAime(int idstatut, int idutilisateur)
        {
            ModeleDataContext mdl = DataContext.Context;

            var sql = from a in mdl.Aime
                      where
                            a.idstatut == idstatut
                            || a.idutilisateur == idutilisateur
                      select a;

            List<Aime> aimes = sql.ToList();
            if (aimes.Count > 0)
                return aimes[0];
            else
                return null;
        }*/


        /// <summary>
        /// Retourne le nombre de "J'aime" d'un statut.
        /// </summary>
        /// <param name="idstatut">Le statut</param>
        /// <returns>Le nombre de "J'aime" sur le statut</returns>
        public static int getNbAime(int idstatut)
        {
            ModeleDataContext mdl = DataContext.Context;

            var sql = from a in mdl.Aime
                      where a.idstatut == idstatut
                      select a;

            List<Aime> aimes = sql.ToList();
            return aimes.Count;
        }
    }
}
